package cn.loioi.multi.common;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import cn.loioi.util.page.JqGrid;
import cn.loioi.util.page.PageUtil;
import tk.mybatis.mapper.entity.Example;

/**
 * 通用的service接口
 * @文件 :BaseService.java
 * @作者 :cn.loioi
 * @创建时间 :2016年10月13日 下午1:24:13
 */
public interface BaseService<T> {
	/**
	 * 查询全部数据
	 */
	public List<T> selectAll();

	/**
	 * 根据条件查询列表
	 * @param example
	 * @return
	 */
	public List<T> selectByExample(Example example);

	/**
	 * 根据Jqgrid自带的查询进行查询
	 * @param jqGrid
	 * @return
	 */
	public List<T> selectByJqGrid(JqGrid<T> jqGrid);

	/**
	 * 根据ID查询一条数据
	 */
	public T findByPrimaryKey(Object id);

	/**
	 * 根据条件查询一条记录
	 * @param example
	 * @return
	 */
	public T findByExample(Example example);

	/**
	 * 插入一条数据
	 */
	@Transactional(rollbackFor = { Exception.class, RuntimeException.class })
	public int insert(T record);

	/**
	 * 删除一条数据
	 */
	@Transactional(rollbackFor = { Exception.class, RuntimeException.class })
	public int delete(Object id);

	/**
	 * 更新一条数据
	 */
	@Transactional(rollbackFor = { Exception.class, RuntimeException.class })
	public int update(T record);

	/**
	 * 设置分页信息
	 * @param page
	 */
	public void setPage(PageUtil page);

}
